home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / libx11inc.lha / X11 / Xm / CascadeBGP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-13  |  7.4 KB  |  220 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC.
  3.  * ALL RIGHTS RESERVED
  4. */ 
  5. /*   $RCSfile: CascadeBGP.h,v $ $Revision: 1.15 $ $Date: 92/07/06 14:50:40 $ */
  6. /*
  7. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  8. /*
  9. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  10. #ifndef  _XmCascadeBGP_h
  11. #define  _XmCascadeBGP_h
  12.  
  13. #include <Xm/CascadeBG.h>
  14. #include <Xm/LabelGP.h>
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20. /*********************************************************************
  21.  * The Arrow Cache record for the menu cascade button
  22.  *********************************************************************/
  23. typedef struct _XmArrowPixmap
  24. {
  25.    Dimension height, width;
  26.    unsigned int depth;
  27.    Pixel top_shadow_color, bottom_shadow_color, foreground_color;
  28.    Display *display;
  29.    Screen *screen;
  30.    Pixmap pixmap;
  31. } XmArrowPixmap;
  32.  
  33.  
  34. /*********************************************************************/
  35. /* The CascadeButton Gadget Cache Object's class and instance records*/
  36. /*********************************************************************/
  37.  
  38.  
  39. typedef struct _XmCascadeButtonGCacheObjClassPart
  40. {
  41.     int foo;
  42.  
  43. } XmCascadeButtonGCacheObjClassPart;
  44.  
  45.  
  46. typedef struct _XmCascadeButtonGCacheObjClassRec
  47. {
  48.         ObjectClassPart                     object_class;
  49.         XmExtClassPart                      ext_class;
  50.         XmLabelGCacheObjClassPart           label_class_cache;
  51.         XmCascadeButtonGCacheObjClassPart   cascade_button_class_cache;
  52.  
  53. } XmCascadeButtonGCacheObjClassRec;
  54.  
  55. externalref XmCascadeButtonGCacheObjClassRec xmCascadeButtonGCacheObjClassRec;
  56.  
  57.  
  58. typedef struct _XmCascadeButtonGCacheObjPart
  59. {
  60.     Pixmap              cascade_pixmap;         /* pixmap for the cascade */
  61.     int                 map_delay;              /* time delay for posting */
  62.     Pixmap        armed_pixmap;
  63. } XmCascadeButtonGCacheObjPart;
  64.  
  65. typedef struct _XmCascadeButtonGCacheObjRec
  66. {
  67.     ObjectPart                   object;
  68.     XmExtPart                    ext;
  69.     XmLabelGCacheObjPart         label_cache;
  70.     XmCascadeButtonGCacheObjPart cascade_button_cache;
  71. } XmCascadeButtonGCacheObjRec;
  72.  
  73. /* The CascadeButtonGadget instance record */
  74.  
  75. typedef    struct _XmCascadeButtonGadgetPart
  76. {            /* resources */
  77.     Widget        submenu;        /* the menu to pull down */
  78.     XtCallbackList    activate_callback;    /* widget fired callback */
  79.     XtCallbackList    cascade_callback;    /* optional callback, called */
  80.                         /* when the menu is about */
  81.                         /* to be pulled down */
  82.             /* internal fields */
  83.     Boolean        armed;            /* armed flag */
  84.     XRectangle        cascade_rect;        /* location of cascade*/
  85.     int         timer;            /* timeout id */
  86.     XmCascadeButtonGCacheObjPart         *cache;
  87.  
  88. } XmCascadeButtonGadgetPart;
  89.  
  90.  
  91. /* Full instance record declaration */
  92.  
  93. typedef struct _XmCascadeButtonGadgetRec
  94. {
  95.     ObjectPart               object;
  96.     RectObjPart                rectangle;
  97.     XmGadgetPart               gadget;
  98.     XmLabelGadgetPart          label;
  99.     XmCascadeButtonGadgetPart  cascade_button;
  100. } XmCascadeButtonGadgetRec;
  101.  
  102.  
  103.  
  104. /* CascadeButton class structure */
  105.  
  106. typedef struct 
  107. {
  108.     XtPointer    extension;    /* Pointer to extension record */
  109. } XmCascadeButtonGadgetClassPart;
  110.  
  111.  
  112. /* Full class record declaration for CascadeButton class */
  113.  
  114. typedef struct _XmCascadeButtonGadgetClassRec 
  115. {
  116.     RectObjClassPart               rect_class;
  117.     XmGadgetClassPart              gadget_class;
  118.     XmLabelGadgetClassPart         label_class;
  119.     XmCascadeButtonGadgetClassPart cascade_button_class;
  120. } XmCascadeButtonGadgetClassRec;
  121.  
  122.  
  123. externalref XmCascadeButtonGadgetClassRec   xmCascadeButtonGadgetClassRec;
  124.  
  125. /* Access macro definitions  for UNcached fields*/
  126.  
  127. #define CBG_Submenu(cb)        (((XmCascadeButtonGadget)             \
  128.                                   cb)->cascade_button.submenu)
  129. #define CBG_ActivateCall(cb)    (((XmCascadeButtonGadget)                    \
  130.                                   cb)->cascade_button.activate_callback)
  131. #define CBG_CascadeCall(cb)    (((XmCascadeButtonGadget)                    \
  132.                                   cb)->cascade_button.cascade_callback)
  133. #define CBG_Armed(cb)        (((XmCascadeButtonGadget)                    \
  134.                                   cb)->cascade_button.armed)
  135. #define CBG_CascadeRect(cb)    (((XmCascadeButtonGadget)                    \
  136.                                   cb)->cascade_button.cascade_rect)
  137. #define CBG_Timer(cb)           (((XmCascadeButtonGadget)                    \
  138.                   cb)->cascade_button.timer)
  139. #define CBG_Cascade_x(cb)    (((XmCascadeButtonGadget)                    \
  140.                                   cb)->cascade_button.cascade_rect.x)
  141. #define CBG_Cascade_y(cb)    (((XmCascadeButtonGadget)                    \
  142.                                   cb)->cascade_button.cascade_rect.y)
  143. #define CBG_Cascade_width(cb)    (((XmCascadeButtonGadget)                    \
  144.                                   cb)->cascade_button.cascade_rect.width)
  145. #define CBG_Cascade_height(cb)    (((XmCascadeButtonGadget)                    \
  146.                                   cb)->cascade_button.cascade_rect.height)
  147. #define CBG_HasCascade(cb)      (((LabG_MenuType(cb) == XmMENU_PULLDOWN)  || \
  148.                       (LabG_MenuType(cb) == XmMENU_POPUP) ||     \
  149.                                   (LabG_MenuType(cb) == XmMENU_OPTION)) &&   \
  150.                      (CBG_Submenu(cb)))
  151.  
  152. #define XmCBG_ARMED_BIT          (1 << 0)    
  153. #define XmCBG_TRAVERSE_BIT     (1 << 1)
  154.  
  155. #define CBG_IsArmed(cb)     (((XmCascadeButtonGadget)(cb))->cascade_button.armed \
  156.               & XmCB_ARMED_BIT)
  157. #define CBG_Traversing(cb) (((XmCascadeButtonGadget)                          \
  158.                 (cb))->cascade_button.armed & XmCBG_TRAVERSE_BIT)
  159.  
  160. #define CBG_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  161.  
  162. #define CBG_SetArmed(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  163.                        (cb))->cascade_button.armed,          \
  164.                       XmCBG_ARMED_BIT, v)
  165.  
  166. #define CBG_SetTraverse(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  167.                        (cb))->cascade_button.armed,          \
  168.                       XmCBG_TRAVERSE_BIT, v)
  169.  
  170.  
  171.                   
  172. /* Access macro definitions  for Cached fields*/
  173.  
  174. #define CBG_CascadePixmap(cb)   (((XmCascadeButtonGadget)                    \
  175.                   cb)->cascade_button.cache->cascade_pixmap)
  176. #define CBG_MapDelay(cb)        (((XmCascadeButtonGadget)                    \
  177.                   cb)->cascade_button.cache->map_delay)
  178. #define CBG_ArmedPixmap(cb)    (((XmCascadeButtonGadget)                    \
  179.                   cb)->cascade_button.cache->armed_pixmap)
  180.  
  181.  
  182. /******************************/
  183. /* Convenience Macros         */
  184. /******************************/
  185.  
  186.  
  187. #define CBG_Cache(w)                    (((XmCascadeButtonGadget)(w))->\
  188.                        cascade_button.cache)
  189. #define CBG_ClassCachePart(w) \
  190.     (((XmCascadeButtonGadgetClass)xmCascadeButtonGadgetClass)->gadget_class.cache_part)
  191.  
  192.  
  193. /********    Private Function Declarations    ********/
  194. #ifdef _NO_PROTO
  195.  
  196. extern int _XmArrowPixmapCacheCompare() ;
  197. extern void _XmArrowPixmapCacheDelete() ;
  198. extern void _XmCreateArrowPixmaps() ;
  199.  
  200. #else
  201.  
  202. extern int _XmArrowPixmapCacheCompare( 
  203.                         XtPointer A,
  204.                         XtPointer B) ;
  205. extern void _XmArrowPixmapCacheDelete( 
  206.                         XtPointer data) ;
  207. extern void _XmCreateArrowPixmaps( 
  208.                         Widget wid) ;
  209.  
  210. #endif /* _NO_PROTO */
  211. /********    End Private Function Declarations    ********/
  212.  
  213.  
  214. #ifdef __cplusplus
  215. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  216. #endif
  217.  
  218. #endif  /* _XmCascadeBGP_h */
  219. /* DON'T ADD STUFF AFTER THIS #endif */
  220.